package code.java;

/**
 * 测试try...catch...finally中, 都包含return的时候, 会得到谁的值???
 *
 * 结论：
 * 1. 没有发生异常的情况：
 *      1. 若finally中return会覆盖try中的return.
 *      2. finally中不存在return的时候, 会返回try中的return.
 *
 *  2. 存在异常的情况:
 *      1. 若finally中return会覆盖catch中的return.
 *      2. finally中不存在return的时候, 会返回catch中的return.
 *      3. 若catch中, 没有return, 则返回try...catch外的return.
 */
public class TryCatchFinallyHaveReturn {

    public static void main(String[] args) {
        System.out.println(test());
    }

    private static String test() {
        try {
            double a = 10 / 0;
            return "try";
        } catch (Exception e) {
            return "catch";
        } finally {
            System.out.println("finally");
            return "finally!";
        }

//        return "OTHER!";
    }
}
